import axios from 'axios'
import token from '../token/token.ts'
import proxyUrl from "@/frame/config/api.ts"
import {ElMessage} from "element-plus"

/**
 * 创建请求类
 */
const request = axios.create({
    baseURL: proxyUrl,
    headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    },
    timeout: 20000
})

/**
 * 请求拦截器
 */
request.interceptors.request.use((config) => {
    config.headers['Authorization'] = 'Bearer ' + token.get()
    return config
}, (error) => {
    return Promise.reject(error)
})

/**
 * 响应拦截器
 */
request.interceptors.response.use((res) => {
    return res.data.data
}, (error) => {
    if (error.response) {
        if (error.response.status == 404) {
            ElMessage.error(`错误代码：${error.response.status}；错误信息：找不到接口！`)
        } else if (error.response.status == 401) {
            ElMessage.error(`错误代码：${error.response.status}；错误信息：身份验证失败，请重新登录！`)
            token.remove()
            setTimeout(() => {
                location.reload()
            }, 1500)
        } else if (error.response.status == 400) {
            if (error.response.data.errorCode) {
                ElMessage.error(`错误代码：${error.response.data.errorCode}；错误信息：${error.response.data.errorMessage}！`)
            } else {
                ElMessage.error(`错误代码：${error.response.data.status}；错误信息：${error.response.data.message}！`)
            }
        } else {
            ElMessage.error(`错误代码：500；错误信息：未知错误，请联系管理员！`)
        }
    }
    return Promise.reject(error)
})

/**
 * 暴露
 */
export default request